package object

import "bmember/pkg/util"

// GradeGroup 体系卡信息聚合
type GradeGroup struct {
	BrandId           string   `json:"brandId"`
	GroupId           int64    `json:"groupId"`
	GradeId           int64    `json:"gradeId"`
	Status            int8     `json:"status"`
	GroupName         string   `json:"groupName"`
	Owner             string   `json:"owner"`
	IsAllStore        bool     `json:"isAllStore"`
	Stores            []string `json:"stores"`
	BusinessTypes     []string `json:"businessTypes"`
	CanRecharge       bool     `json:"canRecharge"`
	Cover             string   `json:"cover"`
	GradeName         string   `json:"gradeName"`
	Discount          int32    `json:"discount"`
	IsDefault         bool     `json:"isDefault"`
	IsRegisterDefault bool     `json:"isRegisterDefault"`
	IsIntegral        bool     `json:"isIntegral"`
	IntegralMoney     int64    `json:"integralMoney"`
	IntegralCnt       int64    `json:"integralCnt"`
	IsNeedPay         bool     `json:"needPay"`
	TopupLimit        int64    `json:"topupLimit"`
}

// CanUseInStore 门店是否适用
func (gg *GradeGroup) CanUseInStore(store string) bool {
	if store == "" || store == "0" {
		return true
	}
	return util.ContainsStr(gg.Stores, store)
}

// CanTopUp 是否可以充值
func (gg *GradeGroup) CanTopUp(fee int64) bool {
	// 门店允许充值，
	if gg.CanRecharge {
		// 不限制起充金额
		if gg.TopupLimit == 0 {
			return true
		}
		// 限制起充金额
		if gg.TopupLimit > fee {
			return false
		}
	}
	return false
}

// CalIntegral 积分计算
func (gg *GradeGroup) CalIntegral(fee int64) int64 {
	if !gg.IsIntegral {
		return 0
	}
	// 积分规则错误
	if gg.IntegralMoney <= 0 || gg.IntegralCnt <= 0 {
		return 0
	}
	return fee / gg.IntegralMoney * gg.IntegralCnt
}
